package com.fc.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;

/**
 * 月份时间工具类，用于获取某个月份的开始时间和结束时间
 */
public class MonthUtil {

    /**
     * 获取某年某月的第一天时间（00:00:00）
     *
     * @param year  年份
     * @param month 月份（1-12）
     * @return 该月第一天的 LocalDateTime
     */
    public static LocalDateTime getMonthStart(int year, int month) {
        LocalDate firstDay = LocalDate.of(year, month, 1);
        return firstDay.atStartOfDay(); // 设置时间为 00:00:00
    }

    /**
     * 获取某年某月的最后一天时间（23:59:59.999999999）
     *
     * @param year  年份
     * @param month 月份（1-12）
     * @return 该月最后一天的 LocalDateTime
     */
    public static LocalDateTime getMonthEnd(int year, int month) {
        LocalDate lastDay = YearMonth.of(year, month).atEndOfMonth();
        return lastDay.atTime(LocalTime.MAX); // 设置为当天最后一刻
    }

    /**
     * 重载方法：获取当前年份某月的第一天时间
     */
    public static LocalDateTime getMonthStart(int month) {
        return getMonthStart(LocalDate.now().getYear(), month);
    }

    /**
     * 重载方法：获取当前年份某月的最后一天时间
     */
    public static LocalDateTime getMonthEnd(int month) {
        return getMonthEnd(LocalDate.now().getYear(), month);
    }
}
